﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace DoctorClient
{
    static class Program
    {
        static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            log.Info("程序启动...");

            #region 解决EF加载慢问题

            try
            {
                //在应用程序初始化时一次性触发所有的DbContext进行mapping views的生成操作
                using (QMS.Core.Common.SQLContext db = new QMS.Core.Common.SQLContext())
                {
                    //预生成映射视图
                    var objectContext = ((System.Data.Entity.Infrastructure.IObjectContextAdapter)db).ObjectContext;
                    var mappingCollection = (System.Data.Entity.Core.Mapping.StorageMappingItemCollection)objectContext.MetadataWorkspace.GetItemCollection(System.Data.Entity.Core.Metadata.Edm.DataSpace.CSSpace);
                    mappingCollection.GenerateViews(new List<System.Data.Entity.Core.Metadata.Edm.EdmSchemaError>());

                    System.Data.Entity.Database.SetInitializer<QMS.Core.Common.SQLContext>(null);//禁用__MigrationHistory访问（检查数据库和model是否匹配，从不创建数据库）

                }
            }
            catch (Exception ex)
            {
                log.Error("预生成映射视图异常！", ex);
            }

            #endregion

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());
        }
    }
}
